package my.assistant.homecashmanager.account.domain;

import java.sql.SQLException;
import java.util.List;

import my.assistant.homecashmanager.account.data.AccountBank;
import my.assistant.homecashmanager.account.data.AccountBase;
import my.assistant.homecashmanager.account.data.AccountCash;
import my.assistant.homecashmanager.account.data.AccountDebt;

public interface AccountDomain {
	/**
	 * 创建一个默认的现金账户，用在用户注册时
	 * 
	 * @param userId
	 * @param homeId
	 * @return
	 * @throws SQLException
	 */
	public AccountCash createDefaultCashAccount(String userId, String homeId)
			throws SQLException;

	/**
	 * 创建一个默认的银行账户，用在用户注册时
	 * 
	 * @param userId
	 * @param homeId
	 * @return
	 * @throws SQLException
	 */
	public AccountBank createDefaultBashAccount(String userId, String homeId)
			throws SQLException;

	/**
	 * 创建一个默认的债权债务账户，用在用户注册时
	 * 
	 * @param userId
	 * @param homeId
	 * @return
	 * @throws SQLException
	 */
	public AccountDebt createDefaultDebtAccount(String userId, String homeId)
			throws SQLException;

	/**
	 * 根据家庭ID获取该家庭下的所有账户信息
	 * 
	 * @param homeId
	 * @return
	 * @throws SQLException
	 */
	public List<AccountBase> getAccountBaseListByHome(String homeId)
			throws SQLException;

	/**
	 * 根据用户ID获取该用户下的所有账户信息
	 * 
	 * @param userId
	 * @return
	 * @throws SQLException
	 */
	public List<AccountBase> getAccountBaseListByUser(String userId)
			throws SQLException;
}
